package com.yuju.hotel.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yuju.common.core.dao.IBaseDao;
import com.yuju.common.core.service.AbstractBaseService;
import com.yuju.hotel.dao.IGoodDao;
import com.yuju.hotel.dao.entity.Good;
import com.yuju.hotel.model.GoodModel;
import com.yuju.hotel.service.IGoodService;
import com.yuju.util.Utils;

/**
 * 
 * 类名：GoodServiceImpl  <br />
 *
 * 功能：
 *
 * @author : zhousc <br />
 * @Date : 2017年11月30日 上午9:21:53  <br />
 * @version : 1.1 <br />
 */
@Service
public class GoodServiceImpl extends AbstractBaseService<GoodModel, Good, String> implements IGoodService{

	@Autowired
	private IGoodDao goodDao;
	
	@Override
	public IBaseDao<GoodModel, Good, String> getDao() {
		// TODO Auto-generated method stub
		return goodDao;
	}

	/**
	 * 
	 * 功能:新增商品 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月30日 上午9:22:20<br/>
	 * 
	 * @param goodModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#save(java.lang.Object)
	 */
	@Override
	public int save(GoodModel goodModel){
		goodModel.setId(Utils.getUUID());
		goodModel.setGmtCreate(new Date());
		goodModel.setGmtModified(new Date());
		return this.getDao().saveSelective(goodModel);
	}
	/**
	 * 
	 * 功能:更新商品 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月30日 上午9:22:34<br/>
	 * 
	 * @param goodModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#updateSelective(java.lang.Object)
	 */
	@Override
	public int updateSelective(GoodModel goodModel){
		goodModel.setGmtModified(new Date());
		return this.getDao().updateSelective(goodModel);
	}

	/**
	 * 
	 * 功能:重名验证 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年12月14日 上午10:21:18<br/>
	 * 
	 * @param goodModel
	 * @return <br/>
	 * @see com.yuju.hotel.service.IGoodService#selectByName(com.yuju.hotel.model.GoodModel)
	 */
	@Override
	public boolean selectByName(GoodModel goodModel) {
		// TODO Auto-generated method stub
		//定义返回值
		boolean result = false;
		//装载数据查询数据库
		GoodModel model = new GoodModel();
		model.setName(goodModel.getName());
		model.setHotelId(goodModel.getHotelId());
		model.setGoodTypeId(goodModel.getGoodTypeId());
		//修改时验证重名
		if (Utils.isNotNull(goodModel.getId())) {
			GoodModel goodModel1 = convert(this.getDao().getObj(goodModel.getId()));
			if (goodModel.getName().equals(goodModel1.getName())) {
		            result = true;
		        } else {
		       	 	Map<Object, Object> beanMap = getBeanMap(model);
		            List<GoodModel> list = this.getDao().list(beanMap);
		            if (list.size() == 0) {
		                result = true;
		            }
		        }
		//新增验证重名
		}else {
			Map<Object, Object> beanMap = getBeanMap(model);
		        List<GoodModel> list = this.getDao().list(beanMap);
		        if (list.size() == 0) {
		            result = true;
		        }
		    }
		return result;
	}
	
	
}